﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Text;

namespace sistemaAcademicoFinanceiroEscolas
{
    public partial class grafico : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                SqlConnection sqld = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqld.Open();

                // carregar locais de origem para o ComBox
                string sqla = "select * from mesAno";

                SqlCommand cmda = new SqlCommand(sqla, sqld);
                SqlDataReader myReadera = cmda.ExecuteReader();

                ListItem aSelecione = new ListItem();
                aSelecione.Value = "0";
                aSelecione.Text = "SELECIONE UM MÊS";
                lstMesInicial.Items.Add(aSelecione);

                while (myReadera.Read())
                {
                    ListItem mesAno = new ListItem();
                    mesAno.Value = myReadera["codigoMes"].ToString();
                    mesAno.Text = myReadera["descricaoMes"].ToString();

                    lstMesInicial.Items.Add(mesAno);
                }
                // fim do carregamento
                myReadera.Close();
                cmda.Dispose();



                // carregar locais de origem para o ComBox
                string sqlb = "select * from anoLetivo";

                SqlCommand cmdb = new SqlCommand(sqlb, sqld);
                SqlDataReader myReaderb = cmdb.ExecuteReader();

                ListItem aSelecionb = new ListItem();
                aSelecionb.Value = "0";
                aSelecionb.Text = "SELECIONE UM ANO";
                lstAnoInicial.Items.Add(aSelecionb);

                while (myReaderb.Read())
                {
                    ListItem mesAno = new ListItem();
                    mesAno.Value = myReaderb["codigoAnoLetivo"].ToString();
                    mesAno.Text = myReaderb["descricaoAnoLetivo"].ToString();

                    lstAnoInicial.Items.Add(mesAno);
                }
                // fim do carregamento
                myReaderb.Close();
                cmdb.Dispose();



                // carregar locais de origem para o ComBox
                string sqlc = "select codigoMatricula, (select nomeAluno from aluno where matricula.codigoAluno = aluno.codigoAluno) as nomeAluno from matricula";

                SqlCommand cmdc = new SqlCommand(sqlc, sqld);
                SqlDataReader myReaderc = cmdc.ExecuteReader();

                ListItem aSelecionc = new ListItem();
                aSelecionc.Value = "0";
                aSelecionc.Text = "SELECIONE UM ALUNO";
                lstAluno.Items.Add(aSelecionc);

                while (myReaderc.Read())
                {
                    ListItem aluno = new ListItem();
                    aluno.Value = myReaderc["codigoMatricula"].ToString();
                    aluno.Text = myReaderc["nomeAluno"].ToString();

                    lstAluno.Items.Add(aluno);
                }
                // fim do carregamento
                myReaderc.Close();
                cmdc.Dispose();


                sqld.Close();
            }
        }

        //public string GoogleOrgChartJson(DataTable dt)
        //{
        //    if ((dt == null) || (dt.Columns.Count == 0)) return "";
        //    var sb = new StringBuilder();
        //    sb.Append("{cols: [");
        //    foreach (DataColumn dc in dt.Columns.Cast<DataColumn>().Where(dc => dc.Caption != "Format"))
        //    {
        //        sb.Append("{id: '");
        //        sb.Append(dc.Caption);
        //        sb.Append("', label: '");
        //        sb.Append(dc.Caption);
        //        sb.Append("', type: '");
        //        sb.Append(dc.DataType.Name.ToLower());
        //        sb.Append("'}, ");
        //    }
        //    sb.Remove(sb.Length - 2, 2);
        //    sb.Append("], rows: [");
        //    foreach (DataRow dr in dt.Rows)
        //    {
        //        sb.Append("{c: [");
        //        for (int i = 0; i < dt.Columns.Count; i++)
        //        {
        //            if (dt.Columns[i].ToString() == "Format")
        //            {
        //                sb.Remove(sb.Length - 3, 3);
        //                sb.Append(", f: '");
        //            }
        //            else
        //                sb.Append("{v: '");

        //            if ((dr[i] != DBNull.Value) && (string)dr[i] != "")
        //                sb.Append(dr[i] + "'}, ");
        //            else
        //                sb.Append("'}, ");

        //        }
        //        sb.Remove(sb.Length - 2, 2);
        //        sb.Append("]}, ");
        //    }
        //    sb.Remove(sb.Length - 2, 2);
        //    sb.Append("]};");
        //    return sb.ToString();
        //}

        protected void btnGerar_Click(object sender, EventArgs e)
        {
            //var dt = new DataTable();

            //dt.Columns.Add("Name", typeof(String)).Caption = "Name";
            //dt.Columns.Add("Format", typeof(String)).Caption = "Format";
            //dt.Columns.Add("Manager", typeof(String)).Caption = "Manager";
            //dt.Rows.Add("Mathias Florin", "Mathias Florin<div style=color:red; font-style:italic><p style=font-size:0.7em>Technical Leader</p></div>", "Christian Florin");
            //dt.Rows.Add("Christian Florin", "Christian Florin<div style=color:red; font-style:italic><p style=font-size:0.7em>CEO</p></div>", "Christian Florin");
            //Page.ClientScript.RegisterStartupScript(GetType(), "vis", string.Format("var fundata = {0}", GoogleOrgChartJson(dt)), true);
            //Panel1.Controls.Add(new LiteralControl(GoogleOrgChartJson(dt)));

            //string graf = "<script type=\"text/javascript\"> \n";
            //graf = graf + "google.load(\"visualization\", \"1\", { packages: [\"corechart\"] }); \n";
            //graf = graf + "google.setOnLoadCallback(drawChart); \n";
            //graf = graf + "function drawChart() { \n";
            //graf = graf + "var data = google.visualization.arrayToDataTable([ \n";
            //graf = graf + "['Mês', 'Inadiplentes', 'Não inadiplentes'], \n";
            //graf = graf + "['Janeiro', 1000, 400], \n";
            //graf = graf + "['Fevereiro', 170, 460], \n";
            //graf = graf + "['Março', 660, 1120], \n";
            //graf = graf + "['Abril', 260, 1020], \n";
            //graf = graf + "['Maio', 1170, 460], \n";
            //graf = graf + "['Junho', 660, 1120], \n";
            //graf = graf + "['Julho', 560, 320], \n";
            //graf = graf + "['Agosto', 1170, 460], \n";
            //graf = graf + "['Setembro', 600, 1620], \n";
            //graf = graf + "['Outubro', 260, 1020], \n";
            //graf = graf + "['Novembro', 1110, 400], \n";
            //graf = graf + "['Dezembro', 900, 540] \n";
            //graf = graf + "]); \n";

            //graf = graf + "var options = { \n";
            //graf = graf + "title: 'Relatório de inadiplência', \n";
            //graf = graf + "hAxis: { title: 'Mês', titleTextStyle: { color: 'black'} } \n";
            //graf = graf + "}; \n";

            //graf = graf + "var chart = new google.visualization.ColumnChart(document.getElementById('chart_div')); \n";
            //graf = graf + "chart.draw(data, options); \n";
            //graf = graf + "} \n";
            //graf = graf + "</script>";

            //Panel1.Controls.Add(new LiteralControl(graf));

            //SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            //sqlc.Open();

            //string sql = "";

            //SqlCommand cmd = new SqlCommand(sql, sqlc);
            //SqlDataReader dr = cmd.ExecuteReader();

            //if (dr.HasRows)
            //{
            //    while (dr.Read())
            //    {

            //    }
            //}

            //cmd.Dispose();
            //dr.Close();

            //sqlc.Close();

            string info = "<table width=70%>";
            info = info + "<tr>";
            info = info + "<td width=50% valign=top>";
            info = info + "<table width=100% border=1 cellpadding=0 cellspacing=0 bordercolor=#99CCFF>";
            info = info + "<tr>";
            info = info + "<td width=50% class=titulo>Valor a receber:</td>";
            info = info + "<td width=50%>R$ </td>";
            info = info + "</tr>";
            info = info + "<tr>";
            info = info + "<td width=50% class=titulo>Valor recebido:</td>";
            info = info + "<td width=50%>R$ </td>";
            info = info + "</tr>";
            info = info + "<tr>";
            info = info + "<td width=50% class=titulo>Valor pendente:</td>";
            info = info + "<td width=50%>R$ </td>";
            info = info + "</tr>";
            info = info + "</table>";
            info = info + "</td>";
            info = info + "<td width=50% valign=top>";
            info = info + "<table width=100% border=1 cellpadding=0 cellspacing=0 bordercolor=#99CCFF>";
            info = info + "<tr>";
            info = info + "<td width=50% class=titulo>Valor gasto:</td>";
            info = info + "<td width=50%>R$ </td>";
            info = info + "</tr>";
            info = info + "<tr>";
            info = info + "<td width=50% class=titulo>Lucro:</td>";
            info = info + "<td width=50%>R$ </td>";
            info = info + "</tr>";
            info = info + "</table>";
            info = info + "</td>";
            info = info + "</tr>";
            info = info + "</table>";

            Panel1.Controls.Add(new LiteralControl(info));



            string graf = "<script type=text/javascript>";
            graf = graf + "google.setOnLoadCallback(drawChart);";
            graf = graf + "</script>";


            string literalcc = "<script language=JavaScript>drawChart();</script>";

            Panel1.Controls.Add(new LiteralControl(literalcc));


        }

        protected void lstAnoFinal_SelectedIndexChanged(object sender, EventArgs e)
        {
            //lstAluno.Items.Clear();
            lstSerie.Items.Clear();
            lstTurma.Items.Clear();

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            lstSerie.Items.Clear();
            lstTurma.Items.Clear();

            //Carregar séries

            string sqlSerie = "select * from serie where codigoAnoLetivo = " + lstAnoInicial.SelectedValue;

            SqlCommand cmdSerie = new SqlCommand(sqlSerie, sqlc);
            SqlDataReader myReaderSerie = cmdSerie.ExecuteReader();

            ListItem serieSelecione = new ListItem();
            serieSelecione.Value = "0";
            serieSelecione.Text = "Selecione uma série";

            lstSerie.Items.Add(serieSelecione);

            while (myReaderSerie.Read())
            {

                ListItem serie = new ListItem();

                serie.Value = myReaderSerie["codigoSerie"].ToString();
                serie.Text = myReaderSerie["descricaoSerie"].ToString();

                lstSerie.Items.Add(serie);


            }

            cmdSerie.Dispose();
            myReaderSerie.Close();
            sqlc.Close();
            //Finalizar carregamento de séries
        }

        protected void lstMesInicial_SelectedIndexChanged(object sender, EventArgs e)
        {
            lstMesFinal.Items.Clear();

            SqlConnection sqld = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqld.Open();

            // carregar locais de origem para o ComBox
            string sqla = "select * from mesAno where codigoMes > " + lstMesInicial.SelectedValue + " and codigoMes <> " + lstMesInicial.SelectedValue;

            SqlCommand cmda = new SqlCommand(sqla, sqld);
            SqlDataReader myReadera = cmda.ExecuteReader();

            ListItem aSelecione = new ListItem();
            aSelecione.Value = "0";
            aSelecione.Text = "SELECIONE UM MÊS";
            lstMesFinal.Items.Add(aSelecione);

            while (myReadera.Read())
            {
                ListItem mesAno = new ListItem();
                mesAno.Value = myReadera["codigoMes"].ToString();
                mesAno.Text = myReadera["descricaoMes"].ToString();

                lstMesFinal.Items.Add(mesAno);
            }
            // fim do carregamento
            myReadera.Close();
            cmda.Dispose();

            sqld.Close();
        }

        protected void lstAnoInicial_SelectedIndexChanged(object sender, EventArgs e)
        {
            lstAnoFinal.Items.Clear();

            SqlConnection sqld = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqld.Open();

            // carregar locais de origem para o ComBox
            string sqlb = "select * from anoLetivo where codigoAnoLetivo > " + lstAnoInicial.SelectedValue + " and codigoAnoLetivo <> " + lstAnoInicial.SelectedValue;

            SqlCommand cmdb = new SqlCommand(sqlb, sqld);
            SqlDataReader myReaderb = cmdb.ExecuteReader();

            ListItem aSelecionb = new ListItem();
            aSelecionb.Value = "0";
            aSelecionb.Text = "SELECIONE UM ANO";
            lstAnoFinal.Items.Add(aSelecionb);

            while (myReaderb.Read())
            {
                ListItem mesAno = new ListItem();
                mesAno.Value = myReaderb["codigoAnoLetivo"].ToString();
                mesAno.Text = myReaderb["descricaoAnoLetivo"].ToString();

                lstAnoFinal.Items.Add(mesAno);
            }
            // fim do carregamento
            myReaderb.Close();
            cmdb.Dispose();

            sqld.Close();
        }

        protected void lstSerie_SelectedIndexChanged(object sender, EventArgs e)
        {
            lstAluno.Items.Clear();
            lstTurma.Items.Clear();

            //Carregar as turma da série

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            string sqlTurmas = "select * from turma where codigoSerie=" + lstSerie.SelectedValue;
            SqlCommand cmd = new SqlCommand(sqlTurmas, sqlc);
            SqlDataReader myReader = cmd.ExecuteReader();

            if (!Page.IsPostBack)
            {

                ListItem turmaSelecione = new ListItem();

                turmaSelecione.Value = "0";
                turmaSelecione.Text = "SELECIONE UMA TURMA";

                lstTurma.Items.Add(turmaSelecione);

            }



            while (myReader.Read())
            {

                ListItem Turma = new ListItem();

                Turma.Value = myReader["codigoTurma"].ToString();
                Turma.Text = myReader["descricaoTurma"].ToString();

                lstTurma.Items.Add(Turma);

            }

            cmd.Dispose();
            myReader.Close();



            // carregar locais de origem para o ComBox
            string sqla = "select codigoMatricula, (select nomeAluno from aluno where matricula.codigoAluno = aluno.codigoAluno) as nomeAluno from matricula where codigoSerie = " + lstSerie.SelectedValue;

            SqlCommand cmdc = new SqlCommand(sqla, sqlc);
            SqlDataReader myReaderc = cmdc.ExecuteReader();

            ListItem aSelecionc = new ListItem();
            aSelecionc.Value = "0";
            aSelecionc.Text = "SELECIONE UM ALUNO";
            lstAluno.Items.Add(aSelecionc);

            while (myReaderc.Read())
            {
                ListItem aluno = new ListItem();
                aluno.Value = myReaderc["codigoMatricula"].ToString();
                aluno.Text = myReaderc["nomeAluno"].ToString();

                lstAluno.Items.Add(aluno);
            }
            // fim do carregamento
            myReaderc.Close();
            cmdc.Dispose();

            sqlc.Close();
        }

        protected void lstTurma_SelectedIndexChanged(object sender, EventArgs e)
        {
            // AQUI PEGAR ALUNOS USANDO OS FILTROS

            lstAluno.Items.Clear();

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();


            // carregar locais de origem para o ComBox
            string sqla = "select codigoMatricula, (select nomeAluno from aluno where matricula.codigoAluno = aluno.codigoAluno) as nomeAluno ";
            sqla = sqla + "from matricula where codigoSerie = " + lstSerie.SelectedValue + " and codigoTurma = " + lstTurma.SelectedValue;

            SqlCommand cmdc = new SqlCommand(sqla, sqlc);
            SqlDataReader myReaderc = cmdc.ExecuteReader();

            ListItem aSelecionc = new ListItem();
            aSelecionc.Value = "0";
            aSelecionc.Text = "SELECIONE UM ALUNO";
            lstAluno.Items.Add(aSelecionc);

            while (myReaderc.Read())
            {
                ListItem aluno = new ListItem();
                aluno.Value = myReaderc["codigoMatricula"].ToString();
                aluno.Text = myReaderc["nomeAluno"].ToString();

                lstAluno.Items.Add(aluno);
            }
            // fim do carregamento
            myReaderc.Close();
            cmdc.Dispose();

            sqlc.Close();
        }
    }
}
